﻿from datetime import datetime
from os.path import dirname, join, abspath
from sys import stderr, __stderr__
from tables import tables

def create(list):
	result=0
	for item in list:
		result+=item.create()
	return result

def drop(list):
	result=0
	for item in list:
		result+=item.drop()
	return result

def recreate(list):
	return [drop(list), create(list)]

def update(list, lim=500000):
	__dir__ = dirname(abspath(__file__))
	path_error = join(__dir__, "update.log")
	stderr = open(path_error, 'a')
	stderr.write("\n\n--------------------------***-----------------------------\nUpdate has begun...\nLocal Date and Time: "+str(datetime.now())+"\n--------------------------***-----------------------------\n\n")
	
	for item in list:
		#В лог записывается сообщение с именем таблицы
		stderr.write("\n******* "+item.name+" *******\n\n\n")
		if item.countself()==0:
			#В лог записывается сообщение о создании таблицы
			stderr.write(str(datetime.now())+"  Creating table...\n")
			item.create()
			#В лог записывается результат
			stderr.write("\n"+str(datetime.now())+"  INFO : Finished creating table "+item.name+" with status: Completed successfully.\n\n\n") 
		#В лог записывается сообщение о начале обновления таблицы
		stderr.write(str(datetime.now())+"  Start updating...\n")
		#Выполняется обновление таблицы
		result=item.updatetable(lim)
		#В лог записывается результат
		stderr.write("\n"+str(datetime.now())+"  INFO : Finished update table: "+item.name+". Rows number changed from "+str(result[0])+" to "+str(result[1])+".\n"+str(datetime.now())+"  INFO : Finished execution update table "+item.name+" with status: Completed successfully.\n\n\n")
	
	stderr.write("\nNo errors logged.\n\n\n--------------------------***-----------------------------\nUpdate has finished...\nLocal Date and Time: "+str(datetime.now())+"\n--------------------------***-----------------------------\n\n\n\n\n")
	stderr.close()
	stderr = __stderr__